<?php

/**
 * Description of Producto
 *
 * @author Nelifer
 */
include_once('BDManager.class.php');

class Producto {
    var $con;
    function Producto(){
        $this->con=new BDManager();
    }

    function insertar($campos, $tipoProducto){
        if($this->con->conectar()==true){   
            if($tipoProducto == 1){
                return mysql_query("INSERT INTO materiasprimas (map_codigo, map_estatus, map_nombre, map_descripcion, map_fechacreacion, map_horacreacion, pre_id, usu_id  ) ".
                                   "VALUES ('".$campos[0]."', '".$campos[1]."', '".$campos[2]."', '".$campos[3]."', '".$campos[4]."', '".$campos[5]."', '".$campos[6]."', '".$campos[7]."' )");
            }else{
                return mysql_query("INSERT INTO productosterminados ".
                                   "(pte_codigo, pte_estatus, pte_nombre, pte_descripcion, pte_fechacreacion, pte_horacreacion, pte_preciounitario, pre_id, usu_id  ) ".
                                   "VALUES ('".$campos[0]."', '".$campos[1]."', '".$campos[2]."', '".$campos[3]."', '".$campos[4]."', '".$campos[5]."', '".$campos[6]."', '".$campos[7]."', '".$campos[8]."')");
            }
        }
    }

    function actualizar($campos, $id, $tipoProducto){
        if($this->con->conectar()==true){
            if( $tipoProducto == 1 ){
                $sql  = "UPDATE materiasprimas SET map_codigo = '".$campos[0]."', map_nombre = '".$campos[1].
                        "', map_descripcion = '".$campos[2]."', pre_id = '".$campos[3]."' WHERE map_id = ".$id;
                
            }else{
                $sql = "UPDATE productosterminados SET pte_codigo = '".$campos[0]."', pte_nombre = '".$campos[1].
                       "', pte_descripcion = '".$campos[2]."', pre_id = '".$campos[3]."', pte_preciounitario = '".$campos[4].
                       "' WHERE pte_id = ".$id;                
            }
            return mysql_query($sql);
           
        }
    }

    function getConsulta($id, $tipoProducto){
        
        if($this->con->conectar()==true){
            if($tipoProducto == 1){
                $sql = "SELECT map.map_id, map.map_codigo, map.map_nombre, map.map_descripcion, pre.pre_id, pre.pre_nombre ".
                        "FROM materiasprimas map " .
                        "INNER JOIN presentacionesproductos pre on pre.pre_id = map.pre_id " .
                        "WHERE map_id=".$id;
            }else{
               $sql = "SELECT pte.pte_id, pte.pte_codigo, pte.pte_nombre, pte.pte_descripcion, pte.pte_preciounitario, ".
                       "pre.pre_id, pre.pre_nombre ".
                       "FROM productosterminados pte " .
                       "INNER JOIN presentacionesproductos pre on pre.pre_id = pte.pre_id " .
                       "WHERE pte_id=".$id;                 
            }
            return mysql_query($sql);   

        }
    }

    public function getConsultas($tipoProducto){
        if($this->con->conectar()==true){
            if($tipoProducto==1){
                $sql = "SELECT map_id, map_codigo, map_nombre FROM materiasprimas ORDER BY map_id ASC";
            }else if($tipoProducto==2){
                 $sql = "SELECT pte.pte_id, pte.pte_codigo, pte.pte_nombre FROM productosterminados pte ORDER BY pte.pte_id ASC" ;   
            }
            return mysql_query($sql);
        }
    }
    public function getConsultasMateriaPrimaProveedor($tipoProducto, $proId = null){
        if($this->con->conectar()==true){
            if($tipoProducto==1){
                $sql = "SELECT map.map_id, map.map_codigo, map.map_nombre ".
                       "FROM materiasprimas map ".
                       "INNER JOIN proveedoresmateriasprimas pma on pma.map_id = map.map_id ".
                       "WHERE pma.pro_id = $proId or $proId = 0 " .
                       "ORDER BY map.map_id ASC";
            }
            return mysql_query($sql);
        }
    }
    function eliminar($id, $tipoProducto){
        if($this->con->conectar()==true){
            if ($tipoProducto == 1)
                $sql = "DELETE FROM materiasprimas WHERE map_id=".$id;
            else 
                $sql = "DELETE FROM productosterminados WHERE pte_id=".$id;
            
            return mysql_query($sql);
        }
    }
    private function countRec($fname,$tname,$where) {
        $con = null;
        $sql = "SELECT count($fname) FROM $tname $where";
        if($this->con->conectar()==true){
            $con = $this->con->conectar();
            $result = mysql_query($sql);
        }
        while ($row = mysql_fetch_array($result)) {
            return $row[0];
        }
    }
    
    public function consultar_grid($page=null, $rp=null, $sortname=null, $sortorder=null, $query=null, $letter_pressed=null, $qtype=null, $tipoProducto=null){
        if (!$sortname) $sortname = 'name';
        if (!$sortorder) $sortorder = 'desc';
        if($query!=''){
             $where = "WHERE `".$qtype."` LIKE '%".$query."%' ";
        } else {
            $where ='';
        }
        if($letter_pressed!=''){
            $where = "WHERE `".$qtype."` LIKE '".$letter_pressed."%' ";	
        }
        if($letter_pressed=='#'){
            $where = "WHERE `".$qtype."` REGEXP '[[:digit:]]' ";
        }
        $sort = "ORDER BY $sortname $sortorder";

        if (!$page) $page = 1;
        if (!$rp) $rp = 10;
        $start = (($page-1) * $rp);
        $limit = "LIMIT $start, $rp";
		if($tipoProducto == 1){
			$sql = "SELECT map.map_id, map.map_codigo, map.map_nombre, map.map_descripcion, map.map_fechacreacion, " .
						"pre.pre_nombre, CONCAT(usu.usu_nombre, ' '  ,usu.usu_apellido) usu_nombre ".
				   "FROM materiasprimas AS map ".
						"INNER JOIN presentacionesproductos pre on pre.pre_id = map.pre_id ".
						"INNER JOIN usuarios usu on usu.usu_id = map.usu_id $where $sort $limit";
			$total = $this->countRec('map_id','materiasprimas',$where);
		}else if($tipoProducto == 2){
			$sql = "SELECT pte.pte_id, pte.pte_codigo, pte.pte_nombre, pte.pte_descripcion, pte.pte_preciounitario, ".
						"pte.pte_fechacreacion, pre.pre_nombre, ".
						"CONCAT(usu.usu_nombre, ' '  ,usu.usu_apellido) usu_nombre ".
				   "FROM productosterminados pte ".
						"INNER JOIN presentacionesproductos pre on pre.pre_id = pte.pre_id ".
						"INNER JOIN usuarios usu on usu.usu_id = pte.usu_id $where $sort $limit";
			$total = $this->countRec('pte_id','productosterminados',$where);
		
		}
		$con = $this->con->conectar();
        $result = mysql_query($sql);
        //$this->con->close($con); OJO CERRAR CONEXIONES

        // Return JSON data
        $data = array();
        $data['page'] = $page;
        $data['total'] = $total;
        $data['rows'] = array();
        if($tipoProducto == 1){            
            while ($row = mysql_fetch_assoc($result)) {
                $fecha = substr($row['map_fechacreacion'], 6,7) . '/'. substr($row['map_fechacreacion'], 4,-2) . '/'. substr($row['map_fechacreacion'], 0,4);
                $data['rows'][] = array(
                'id' => $row['map_id'],
                'cell' => array($row['map_id'], $row['map_codigo'], $row['map_nombre'], $row['map_descripcion'],  $fecha,
                                $row['pre_nombre'], $row['usu_nombre'])
                );
            }
        }else if($tipoProducto == 2){
            while ($row = mysql_fetch_assoc($result)) {
                $fecha = substr($row['pte_fechacreacion'], 6,7) . '/'. substr($row['pte_fechacreacion'], 4,-2) . '/'. substr($row['pte_fechacreacion'], 0,4);
                $data['rows'][] = array(
                'id' => $row['pte_id'],
                'cell' => array($row['pte_id'], $row['pte_codigo'], $row['pte_nombre'], $row['pte_descripcion'], $row['pte_preciounitario'], 
                                $fecha, $row['pre_nombre'], $row['usu_nombre'])
                );
            }
        }
        echo json_encode($data);
    }
    public function getItemsProductos($tipoProducto, $proId=null){
        $data   = array();
        if($tipoProducto == 1){
            $result = $this->getConsultasMateriaPrimaProveedor($tipoProducto, $proId);
            while ($row = mysql_fetch_assoc($result)) {
                $row_array['id'] = $row['map_id'];
                $row_array['value'] = $row['map_nombre'];
                $row_array['abbrev'] = $row['map_codigo'] . " / ". $row['map_nombre'];
                array_push($data,$row_array);
            }            
        }else if($tipoProducto==2){
            $result = $this->getConsultas($tipoProducto);
            while ($row = mysql_fetch_assoc($result)) {
                $row_array['id'] = $row['pte_id'];
                $row_array['value'] = $row['pte_nombre'];
                $row_array['abbrev'] = $row['pte_codigo'] . " / ". $row['pte_nombre'];
                array_push($data,$row_array);
            }      
        }

        
        echo json_encode($data);
        
    }
    public function getConsultasReporteGeneral($tipoProducto){
        if($this->con->conectar()==true){
            if($tipoProducto == 1){
                $sql= "SELECT map.map_id pro_id, map.map_codigo pro_codigo, map.map_nombre pro_nombre, inv.inv_canttotal, ".
                        "pre.pre_id, pre.pre_nombre ".
                        "FROM materiasprimas map " .
                        "INNER JOIN inventarios inv ON inv.map_id = map.map_id ".
                        "INNER JOIN presentacionesproductos pre on pre.pre_id = map.pre_id " .
                        "ORDER BY map.map_id ASC";
            }else{
               $sql = "SELECT pte.pte_id pro_id, pte.pte_codigo pro_codigo, pte.pte_nombre pro_nombre, inv.inv_canttotal, ".
                       "pre.pre_id, pre.pre_nombre ".
                       "FROM productosterminados pte " .
                       "INNER JOIN inventarios inv ON inv.pte_id = pte.pte_id ".
                       "INNER JOIN presentacionesproductos pre on pre.pre_id = pte.pre_id " .
                       "ORDER BY pte.pte_id ASC";                 
            }
            return mysql_query($sql);
        }
    }
    public function getConsultasReporteIndividual($tipoProducto, $prodId, $fechaIni, $fechafin){
        if($this->con->conectar()==true){
            $condicion = " ";

            if($fechaIni>0 && $fechafin>0)
                $condicion = " AND reg.reg_fecha BETWEEN $fechaIni AND $fechafin ";
            if($tipoProducto == 1){
                
                $sql= "SELECT map.map_id pro_id, map.map_codigo pro_codigo, map.map_nombre pro_nombre, reg.reg_cantidad, ".
                        "reg.reg_fecha, CONCAT(usu.usu_nombre, ' '  ,usu.usu_apellido) usu_nombre ".
                        "FROM materiasprimas map " .
                        //"INNER JOIN presentacionesproductos pre on pre.pre_id = map.pre_id " .
                        "INNER JOIN inventarios inv ON inv.map_id = map.map_id ".
                        "LEFT JOIN registrosinventarios reg ON reg.inv_id = inv.inv_id " .
                        "INNER JOIN usuarios usu ON usu.usu_id = reg.usu_id ".
                        "WHERE map.map_id = $prodId $condicion " .
                        "ORDER BY reg.reg_id ASC";
            }else{
               $sql = "SELECT pte.pte_id pro_id, pte.pte_codigo pro_codigo, pte.pte_nombre pro_nombre, reg.reg_cantidad, ".
                       "reg.reg_fecha, CONCAT(usu.usu_nombre, ' '  ,usu.usu_apellido) usu_nombre ".
                       "FROM productosterminados pte " .
                       //"INNER JOIN presentacionesproductos pre on pre.pre_id = pte.pre_id " .
                       "INNER JOIN inventarios inv ON inv.pte_id = pte.pte_id ".
                       "LEFT JOIN registrosinventarios reg ON reg.inv_id = inv.inv_id " .  
                       "INNER JOIN usuarios usu ON usu.usu_id = reg.usu_id ".
                       "WHERE pte.pte_id = $prodId $condicion " .
                       "ORDER BY reg.reg_id ASC";                 
            }
            //echo "SQL: $sql";
            return mysql_query($sql);
        }
    }
        public function getEncabezadoReporte($tipoProducto, $prodId, $fechaIni, $fechafin){
        if($this->con->conectar()==true){
            $condicion = " ";
            //if($fechaIni>0 && $fechafin>0)
             //   $condicion = " AND reg.reg_fecha BETWEEN $fechaIni AND $fechafin ";
            if($tipoProducto == 1){
                
                $sql= "SELECT map.map_id pro_id, map.map_codigo pro_codigo, map.map_nombre pro_nombre, inv.inv_canttotal, ".
                        "pre.pre_id, pre.pre_nombre ".
                        "FROM materiasprimas map " .
                        "INNER JOIN presentacionesproductos pre on pre.pre_id = map.pre_id " .
                        "INNER JOIN inventarios inv ON inv.map_id = map.map_id ".
                        //"LEFT JOIN registrosinventarios reg ON reg.inv_id = inv.inv_id " .                        
                        "WHERE map.map_id = $prodId $condicion " ;
            }else{
               $sql = "SELECT pte.pte_id pro_id, pte.pte_codigo pro_codigo, pte.pte_nombre pro_nombre, inv.inv_canttotal, ".
                       "pre.pre_id, pre.pre_nombre ".
                       "FROM productosterminados pte " .
                       "INNER JOIN presentacionesproductos pre on pre.pre_id = pte.pre_id " .
                       "INNER JOIN inventarios inv ON inv.pte_id = pte.pte_id ".
                       //"LEFT JOIN registrosinventarios reg ON reg.inv_id = inv.inv_id " .                       
                       "WHERE pte.pte_id = $prodId $condicion " ; 
            }
            //echo "SQL: $sql";
            return mysql_query($sql);
        }
    }
}

?>
